마이크로소프트 SQL 서버
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
마이크로소프트 SQL 서버(Microsoft SQL Server)는 마이크로소프트에서 개발한 관계형 데이터베이스 관리 시스템(RDBMS)이다. 1989년 OS/2용으로 시작하여 1993년 Windows NT로 플랫폼을 전환했으며, 1995년 사이베이스와의 협력을 종료하고 독자적인 개발을 시작했다. SQL Server는 Transact-SQL(T-SQL)을 사용하며, OLAP, 데이터 마이닝, 비즈니스 인텔리전스 기능과 데이터베이스 미러링, 장애 조치 기능을 제공한다. 다양한 에디션으로 제공되며, Enterprise, Standard, Web, Developer, Express Edition 등이 있다. 주요 관리 도구로는 SQL Server Management Studio(SSMS)와 Azure Data Studio가 있으며, 경쟁 제품으로는 오라클 데이터베이스, DB2, PostgreSQL, MySQL 등이 있다.
더 읽어볼만한 페이지
- 마이크로소프트 데이터베이스 소프트웨어 - 마이크로소프트 액세스
마이크로소프트 액세스는 1992년 출시된 데이터베이스 관리 시스템으로, 테이블, 쿼리, 폼 등을 생성하고 VBA를 통해 솔루션을 개발하며, 윈도우에서 사용 가능하고 다양한 데이터 형식과 통합된다. - 마이크로소프트 데이터베이스 소프트웨어 - 비주얼 폭스프로
비주얼 폭스프로는 xBase 언어군에 속하는 절차적 프로그래밍 언어이자 데이터베이스 관리 시스템으로, dBase를 기반으로 관계형 데이터베이스 엔진과 통합되어 SQL 쿼리 및 데이터 조작을 지원하며, 마이크로소프트 개발 중단 후 커뮤니티 주도의 개발이 진행되었다. - 관계형 데이터베이스 관리 시스템 - IBM 시스템 R
- 관계형 데이터베이스 관리 시스템 - 마이크로소프트 액세스
마이크로소프트 액세스는 1992년 출시된 데이터베이스 관리 시스템으로, 테이블, 쿼리, 폼 등을 생성하고 VBA를 통해 솔루션을 개발하며, 윈도우에서 사용 가능하고 다양한 데이터 형식과 통합된다. - 데이터베이스 관리 시스템 - 트랜잭션 처리
트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이며, ACID 속성을 통해 데이터 정확성을 유지하고 롤백, 데드락 처리 등의 기술을 활용한다. - 데이터베이스 관리 시스템 - 저장 프로시저
저장 프로시저는 데이터베이스 관리 시스템에서 SQL 문들을 미리 컴파일하여 저장하고, 모듈화, 보안성, 성능 향상, 유지보수 용이성과 같은 특징을 가지며, 데이터베이스 시스템마다 구현 방식과 지원하는 언어가 다를 수 있는 코드 묶음이다.
| 마이크로소프트 SQL 서버 | |
|---|---|
| 기본 정보 | |
| 개발사 | 마이크로소프트 |
| 출시일 | 1989년 4월 24일 (SQL Server 1.0) |
| 최신 버전 | 2022 |
| 최신 버전 출시일 | 2022년 11월 16일 |
| 프로그래밍 언어 | C C++ C# |
| 운영 체제 | 리눅스 마이크로소프트 윈도우 서버 마이크로소프트 윈도우 |
| 플랫폼 | x86, x64 |
| 종류 | 관계 데이터베이스 관리 시스템 |
| 라이선스 | 마이크로소프트 EULA |
| 언어 | 영어 중국어 프랑스어 독일어 이탈리아어 일본어 한국어 포르투갈어(브라질) 러시아어 스페인어 인도네시아어 |
| 공식 웹사이트 | Microsoft SQL Server |
| 기술 정보 | |
| 최신 릴리스 버전 | (CU16 16.0.4165.4) |
2. 역사
SQL Server는 1989년 마이크로소프트, 사이베이스, 애시턴 테이트 세 회사가 협력하여 OS/2 운영 체제용 16비트 서버로 사이베이스 SQL 서버를 이식하면서 시작되었다. 이는 SQL 언어 질의에 응답하는 서버 소프트웨어 개발의 시초였다.
원래 SQL Server는 유닉스 환경에서 작동하던 사이베이스의 제품이었으나, OS/2용 데이터베이스 관리 시스템(DBMS)을 필요로 했던 마이크로소프트와의 제휴를 통해 Windows NT 플랫폼으로 이식되었다. 1993년 SQL Server 4.21 출시가 그 시작이었다.
1995년 SQL Server 6.0 출시 이후 마이크로소프트는 사이베이스와 협력을 종료하고 독자적인 개발 노선을 걷게 된다. 이로 인해 두 회사의 제품은 기능적으로 분화되었으며, 사이베이스는 자사 제품명을 Adaptive Server Enterprise(ASE)로 변경하여 현재 SQL Server는 통상 마이크로소프트 제품을 지칭한다. 다만, 인터페이스 수준의 호환성은 일부 남아있다.
마이크로소프트는 SQL Server 6.5 이후 아키텍처 혁신을 위해 관계형 데이터베이스 전문가 짐 그레이 등을 영입하여 코드 대부분을 재작성했고, 그 결과 1998년 C++ 기반의 SQL Server 7.0이 탄생했다. 이는 버전 번호 변화 이상의 근본적인 변화였다. 2005년 SQL Server 2005 출시로 기존 사이베이스 코드를 완전히 대체하는 작업이 마무리되었다.[48]
플랫폼 확장 측면에서는 2016년 리눅스 버전 출시 계획 발표[46] 이후, 2017년 SQL Server 2017부터 리눅스와 도커 환경을 공식 지원하기 시작했다.[2] 이는 SQL PAL(SQL Platform Abstraction Layer)이라는 추상화 계층을 통해 구현되어 플랫폼 간 동등한 품질을 제공한다.[2] 가장 최신 버전은 2022년에 출시된 SQL Server 2022이다.
2. 1. 버전 별 역사
마이크로소프트 SQL 서버의 역사는 1989년 OS/2 운영 체제용 16비트 서버로 출시된 SQL Server 1.0부터 시작된다. 이름처럼 SQL 언어 질의에 응답하는 서버 소프트웨어이다.
- '''1989년''': SQL Server 1.0 출시. 사이베이스, 애시턴 테이트(Ashton-Tate), 그리고 마이크로소프트가 OS/2용으로 사이베이스 SQL 서버를 이식하는 프로젝트로 시작되었다.
- '''1991년''': SQL Server 1.1 출시.
- '''1993년''': SQL Server 4.2 출시. Windows NT용으로 출시되어 Windows NT 플랫폼 진출을 알렸다.
- '''1995년''': SQL Server 6.0 출시. 이 버전을 기점으로 사이베이스와의 협력이 종료되었다. 사이베이스는 마이크로소프트와 별도로 자체적인 SQL Server 변형인 사이베이스 Adaptive Server Enterprise를 계속 개발했다.
- '''1996년''': SQL Server 6.5 출시.
- '''1998년''': SQL Server 7.0 출시. 소스 코드가 C에서 C++로 전환되었다.
- '''2000년''': SQL Server 2000 (버전 8, 코드명 Shiloh) 출시. (출시일: 2000년 11월 30일)
- '''2005년''': SQL Server 2005 출시. 기존 사이베이스 코드를 마이크로소프트 코드로 완전히 수정하는 작업을 마무리했다.[48]
- '''2008년''': SQL Server 2008 출시.
- '''2012년''': SQL Server 2012 출시. xVelocity라고도 알려진 열 기반 메모리 내 저장소가 추가되었다.
- '''2014년''': SQL Server 2014 출시.
- '''2016년''': SQL Server 2016 출시. 이 버전부터 x64 프로세서만 지원하며, 최소 1.4GHz 프로세서가 필요하고 이상을 권장한다.[4]
- '''2017년''': SQL Server 2017 출시. 레드햇 엔터프라이즈 리눅스, 수세 리눅스 엔터프라이즈 서버, 우분투, 도커 엔진 등 리눅스 플랫폼을 지원하기 시작했다.[2]
- '''2019년''': SQL Server 2019 출시. 빅데이터 클러스터, "지능형 데이터베이스" 개선, 향상된 모니터링 기능, 업데이트된 개발자 환경, 리눅스 기반 설치에 대한 업데이트 및 개선 사항이 추가되었다.[3][49]
- '''2022년''': SQL Server 2022 출시. 현재 최신 버전이며, 2022년 11월 16일에 출시된 RTM 버전은 16.0.1000.6이다.[5]
현재 지원되는 주요 버전은 다음과 같다.
- SQL Server 2014
- SQL Server 2016
- SQL Server 2017
- SQL Server 2019
- SQL Server 2022
각 버전은 최신 엔진으로 개선되거나 새로운 SQL 구문 지원, 알고리즘 변경 등이 이루어진다. 어느 정도의 하위 호환성을 유지하며, "호환성 수준"을 지정하여 특정 버전과 동일하게 동작하도록 설정할 수 있다. 그러나 새로운 버전에서 특정 호환성 수준 지원이 중단되면 해당 수준에 맞춰진 애플리케이션은 사용할 수 없게 될 수 있으므로 주의가 필요하다.[25]
아래는 각 SQL Server 버전별로 지원하는 호환성 수준을 나타낸 표이다.
| 제품명 | 지원되는 호환성 수준 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 60 | 65 | 70 | 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | |
| Microsoft SQL Server 6.0 | ✓ | ||||||||||
| Microsoft SQL Server 6.5 | ✓ | ✓ | |||||||||
| Microsoft SQL Server 7.0 | ✓ | ✓ | ✓ | ||||||||
| Microsoft SQL Server 2000 | ✓ | ✓ | ✓ | ✓ | |||||||
| Microsoft SQL Server 2005 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Microsoft SQL Server 2008 | ✓ | ✓ | ✓ | ||||||||
| Microsoft SQL Server 2008 R2 | ✓ | ✓ | ✓ | ||||||||
| Microsoft SQL Server 2012 | ✓ | ✓ | ✓ | ||||||||
| Microsoft SQL Server 2014 | ✓ | ✓ | ✓ | ||||||||
| Microsoft SQL Server 2016 | ✓ | ✓ | ✓ | ✓ | |||||||
| Microsoft SQL Server 2017 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Microsoft SQL Server 2019 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
SQL Server는 데이터 관리를 위한 다양한 특징과 기능을 제공한다.
3. 특징
3. 1. 주요 기능
T-SQL은 마이크로소프트가 SQL을 확장하여 만든 절차적 언어이다. 표준 SQL의 데이터 조작 언어(DML) 및 데이터 정의 언어(DDL) 명령어 외에도 SQL Server 관련 설정, 보안, 데이터베이스 통계 관리 등을 위한 명령어들을 제공한다. T-SQL을 사용하면 데이터베이스 스키마 생성 및 변경, 데이터 입력 및 편집, 서버 모니터링 및 관리 등 SQL Server의 다양한 작업을 수행할 수 있다. 클라이언트 애플리케이션은 T-SQL 쿼리와 문을 서버로 보내 기능을 활용하고, 서버는 결과를 반환한다. 관리 기능은 시스템 정의 저장 프로시저를 통해 제공되며, T-SQL 쿼리에서 호출하여 관리 작업을 수행할 수 있다. 또한, 연결된 서버를 생성하여 단일 쿼리로 여러 서버의 작업을 처리하는 것도 가능하다.
SQL Server는 SQL CLR을 통해 .NET Framework와 통합된다. SQL Server 자체가 .NET 런타임을 호스팅하며 메모리, 스레딩, 리소스 관리 등을 SQLOS에서 직접 처리한다. 이를 통해 저장 프로시저, 트리거, UDT 등을 C#, VB.NET과 같은 관리되는 .NET 언어로 작성할 수 있다. 관리 코드는 CLI 어셈블리로 컴파일되고 형식 안전성 검사 후 데이터베이스에 등록되어 다른 프로시저처럼 호출된다. 단, 사용자 인터페이스 관련 API 등 기본 클래스 라이브러리의 일부 기능은 사용할 수 없다. SQL CLR 코드에서 데이터베이스 데이터에 접근할 때는 ADO.NET API를 사용하며, '컨텍스트 연결' 설정을 통해 현재 실행 중인 세션과 동일한 연결을 사용할 수 있다. 또한 XQuery를 포함한 XML 데이터 형식 지원 등 ADO.NET API에 대한 개선 사항도 제공된다.
SQL Server Machine Learning Services는 데이터베이스 인스턴스 내에서 기계 학습 및 데이터 분석을 수행하는 기능이다. 네트워크를 통해 데이터를 이동할 필요 없이 R이나 Python 스크립트를 실행할 수 있다. R은 SQL Server 2016부터, Python은 SQL Server 2017부터 지원된다. 이 서비스에는 데이터 과학용 패키지와 함께 Microsoft의 독자적인 대규모 모델 생성용 패키지(revoscalepy, RevoScaleR, microsoftml 등)가 포함되어 있다.[29] 분석가는 원격으로 SQL Server에 연결하여 스크립트 실행을 지시하거나, T-SQL 쿼리 내에서 외부 스크립트로 R/Python 코드를 실행할 수 있다. 학습된 모델은 데이터베이스에 저장하고 활용할 수 있다.
SQL Server Analysis Services(SSAS)는 비즈니스 인텔리전스(BI)의 핵심 요소인 OLAP 및 데이터 마이닝 기능을 제공한다. OLAP 엔진은 MOLAP, ROLAP, HOLAP 저장 모드를 지원하며, 분석용 XML(XML for Analysis) 표준을 통신 프로토콜로 사용한다. 큐브 데이터는 MDX 및 LINQ 쿼리로 접근할 수 있고, 데이터 마이닝 기능은 DMX 쿼리 언어를 통해 사용한다. SSAS는 결정 트리, 군집 알고리즘, 나이브 베이즈 알고리즘, 시계열 분석, 선형 및 로지스틱 회귀, 신경망 등 다양한 데이터 마이닝 알고리즘을 포함한다.
SQL Server Reporting Services(SSRS)는 데이터베이스의 데이터를 이용해 보고서를 생성하는 환경이다. 웹 인터페이스를 통해 관리되며, 사용자 지정 보고서 애플리케이션 개발을 위한 웹 서비스 인터페이스도 제공한다. 보고서는 RDL 파일 형식으로 생성된다.[34] 보고서 디자인은 Microsoft Visual Studio의 비즈니스 인텔리전스 개발 스튜디오나 함께 제공되는 보고서 작성기를 사용하여 수행할 수 있다.[35] 생성된 RDL 파일은 Excel, PDF, CSV, XML, BMP, EMF, GIF, JPEG, PNG, TIFF[36], HTML 웹 아카이브 등 다양한 형식으로 출력할 수 있다.[37][38]
SQL Server Integration Services(SSIS)는 데이터 가져오기, 통합, 데이터 웨어하우스 요구사항을 위한 ETL 기능을 제공한다. SSIS는 다양한 원본에서 데이터를 추출하고, 변환(집계, 중복 제거, 정규화/비정규화, 병합 등)하며, 결과를 대상 데이터베이스나 파일로 내보내는 워크플로를 구축하기 위한 GUI 도구를 포함한다.[43]
SQL Server 전체 텍스트 검색(Full-Text Search, FTS) 서비스는 데이터베이스 내 비정형 텍스트 데이터에 대한 특화된 색인 및 쿼리 기능이다. 문자 기반 텍스트 열에 전체 텍스트 색인을 생성하여 단어를 검색할 수 있다. 이는 SQL의 `LIKE` 연산자보다 효율적일 수 있다.[44] FTS는 정확도에 따라 0에서 1000까지의 순위 값을 부여하며, 단어의 문법적 변형(예: 동사의 시제 변화)을 찾는 언어적 검색(굴절 검색)과 검색어 순서와 상관없이 단어들이 가까이 있으면 일치로 간주하는 근접 검색도 지원한다. T-SQL에는 FTS 기능을 사용하기 위한 특별 연산자가 있다. FTS 엔진은 '필터 디먼' 프로세스와 '검색' 프로세스로 구성된다. 필터 디먼은 iFilter를 사용하여 Microsoft Word 문서 같은 이진 파일에서 텍스트를 추출하고 단어로 분해한다. 검색 프로세스의 색인 생성기는 '잡음 단어'(불용어)를 제거하고 나머지 단어로 역색인을 만든다. SQL Server의 '수집기'는 테이블 변경을 감지하여 색인을 업데이트한다. 쿼리가 들어오면 FTS 쿼리 프로세서가 이를 처리하여 시소러스(유의어 사전)를 참조하고 역색인을 검색하여 순위를 매긴 후 결과를 반환한다.
SSMS는 SQL Server 2005부터 제공되는 그래픽 사용자 인터페이스(GUI) 도구로, 서버의 모든 구성 요소를 구성, 관리, 운영하는 데 사용된다. 이전 버전의 SQL Server Enterprise Manager를 대체했다. 스크립트 편집기와 그래픽 도구를 모두 포함하며, SQL Server Express Edition용 버전(SSMSE)도 있다. 주요 기능인 '개체 탐색기'를 통해 서버 내 객체를 탐색하고 조작할 수 있으며, 쿼리 실행 계획을 시각적으로 분석하여 성능을 최적화하는 데도 사용된다. SSMS를 사용하여 새 데이터베이스 생성, 테이블 및 인덱스 수정, 성능 분석 등을 수행할 수 있으며, 쿼리 작성 및 실행을 위한 GUI 기반 쿼리 창도 제공한다. GUI 도구가 잘 갖춰져 있어 데이터베이스 관리 시스템(DBMS)에 익숙하지 않은 사용자도 비교적 쉽게 다룰 수 있다.
기타 주요 기능은 다음과 같다.3. 2. 아키텍처
SQL Server는 클라이언트의 요청을 받아 데이터를 저장, 관리, 검색하는 다층적인 아키텍처로 구성된다.
클라이언트와의 통신은 주로 TDS 프로토콜을 사용하는 프로토콜 계층을 통해 이루어진다. 데이터는 데이터베이스 내부에 파일(.mdf, .ndf, .ldf) 형태로 저장되며, 기본 관리 단위는 8KB 크기의 페이지이다. SQL Server는 다양한 데이터 형식을 지원하고, 사용자 정의 형식(UDT)도 사용할 수 있다.
데이터 접근 속도를 높이기 위해 버퍼 관리자가 RAM에 데이터 페이지를 캐시하며, 디스크 I/O를 최소화한다. 여러 사용자가 동시에 데이터를 안전하게 사용하도록 동시성 제어 메커니즘(잠금 또는 MVCC)을 제공하여 데이터 무결성을 보장한다.
데이터 검색과 조작은 주로 T-SQL 쿼리를 통해 이루어진다. 쿼리 프로세서는 쿼리 최적화 과정을 거쳐 가장 효율적인 방식으로 쿼리를 실행한다. 이 외에도 저장 프로시저를 통해 자주 사용되는 쿼리를 서버에 저장하거나, SQL CLR을 이용해 .NET Framework 언어로 데이터베이스 로직을 작성하는 등 다양한 기능을 제공한다.
3. 2. 1. 프로토콜 계층
프로토콜 계층은 SQL Server의 외부 인터페이스를 구현한다. SQL Server에서 호출 가능한 모든 작업은 마이크로소프트가 정의한 TDS(Tabular Data Stream)라는 형식을 통해 전달된다. TDS는 데이터베이스 서버와 클라이언트 간 데이터 전송에 사용되는 애플리케이션 계층 프로토콜이다. 이 프로토콜은 1984년 Sybase Inc.가 자사의 Sybase SQL Server 관계형 데이터베이스 엔진을 위해 처음 설계하고 개발했으며, 이후 마이크로소프트가 Microsoft SQL Server에 적용했다.
TDS 패킷은 TCP/IP, 네임드 파이프, 공유 메모리 등 다른 물리적 전송 프로토콜로 캡슐화될 수 있다. 따라서 이러한 프로토콜들을 통해 SQL Server에 접근할 수 있다. 또한 SQL Server API는 웹 서비스를 통해서도 노출된다.
3. 2. 2. 데이터 저장소
데이터베이스는 여러 열로 구성된 표들의 집합이다. SQL Server는 ''정수'', ''실수'', ''십진수'', ''문자''(문자열 포함), ''가변 길이 문자열'', 이진 데이터(대용량 이진 객체용), ''텍스트''(텍스트 데이터용) 등 다양한 데이터 형식을 지원한다. 실수를 정수로 반올림할 때는 인수에 따라 대칭 산술 반올림 또는 대칭 내림 반올림(''fix'') 방식을 사용한다. 예를 들어 `SELECT Round(2.5, 0)`는 3을 반환한다.
Microsoft SQL Server는 사용자 정의 복합 형식(UDT)의 정의와 사용을 지원하며, 서버 통계를 가상 테이블 및 뷰(동적 관리 뷰 또는 DMV라고 함)로 제공한다. 데이터베이스는 표 외에도 뷰, 저장 프로시저, 인덱스, 제약 조건, 트랜잭션 로그 등 다른 개체들을 포함할 수 있다. SQL Server 데이터베이스는 최대 231개의 개체를 가질 수 있으며, 최대 파일 크기가 260 바이트(1 엑사바이트)인 여러 운영 체제 수준 파일을 포함할 수 있다. 데이터베이스의 데이터는 확장명이 .mdf인 기본 데이터 파일에 저장된다. .ndf 확장명을 가진 보조 데이터 파일은 하나의 데이터베이스 데이터를 여러 파일이나 파일 시스템에 분산시키는 데 사용된다. 로그 파일은 .ldf 확장명으로 식별된다.
데이터베이스에 할당된 저장 공간은 순서대로 번호가 매겨진 페이지로 나뉘며, 각 페이지의 크기는 8kB이다. 페이지는 SQL Server 작업의 기본 입출력(I/O) 단위이다. 각 페이지는 페이지 번호, 페이지 유형, 페이지 내 여유 공간, 소유 객체의 ID 등 메타데이터를 저장하는 96 바이트 헤더를 가진다. 페이지 유형은 페이지에 담긴 데이터를 정의하며, 여기에는 데이터베이스에 저장된 실제 데이터, 인덱스, 페이지 할당 정보를 담은 할당 맵, 변경 사항 정보를 담은 변경 맵, 이미지나 텍스트 같은 대용량 데이터 등이 포함된다. 페이지가 기본 I/O 단위이지만, 공간 관리는 실제로 8개의 페이지로 구성된 익스텐트(Extent) 단위로 이루어진다. 데이터베이스 객체는 익스텐트의 8개 페이지 전체를 사용하는 '균일 익스텐트'를 차지하거나, 최대 7개의 다른 객체와 익스텐트를 공유하는 '혼합 익스텐트'를 사용할 수 있다. 데이터베이스 테이블의 행은 하나의 페이지, 즉 8kB 크기를 넘을 수 없다. 만약 데이터가 이 크기를 초과하고 행에 ''varchar'' 또는 ''varbinary'' 데이터가 포함된 경우, 해당 열의 데이터는 새로운 페이지(또는 페이지 시퀀스인 '할당 단위')로 옮겨지고 원래 위치에는 데이터 포인터가 남게 된다.
테이블의 물리적 저장을 위해 행들은 일련의 파티션(1부터 n까지 번호 매겨짐)으로 나뉜다. 파티션 크기는 사용자가 정의할 수 있으며, 기본적으로 모든 행은 하나의 파티션에 속한다. 데이터베이스를 컴퓨터 클러스터에 분산시키기 위해 테이블을 여러 파티션으로 나눌 수 있다. 각 파티션의 행은 B-트리 또는 힙 구조로 저장된다. 테이블에 행의 빠른 검색을 가능하게 하는 관련 클러스터형 인덱스가 있다면, 행은 해당 인덱스 값에 따라 정렬된 B-트리 구조로 저장된다. 데이터는 리프 노드에 위치하고, 다른 노드들은 각 노드에서 접근 가능한 리프 데이터의 인덱스 값을 저장한다. 인덱스가 클러스터형이 아닌 경우, 행은 인덱스 키 순서대로 정렬되지 않는다. 인덱싱된 뷰는 인덱싱된 테이블과 동일한 저장 구조를 가진다. 클러스터형 인덱스가 없는 테이블은 정렬되지 않은 힙 구조로 저장되지만, 행의 빠른 검색을 위해 비클러스터형 인덱스를 가질 수 있다. 경우에 따라 힙 구조가 클러스터형 구조보다 성능상 이점을 가질 수도 있다. 힙과 B-트리 모두 여러 할당 단위를 포함할 수 있다.
3. 2. 3. 버퍼 관리
SQL Server는 디스크 I/O를 최소화하기 위해 RAM에 데이터 버퍼(data buffereng) 페이지를 버퍼링한다. 8KB 크기의 모든 페이지는 메모리에 버퍼링될 수 있으며, 현재 버퍼링된 모든 페이지의 집합을 버퍼 캐시(buffer cacheeng)라고 부른다. SQL Server에서 사용할 수 있는 메모리 양에 따라 메모리에 캐시될 페이지 수가 결정된다. 버퍼 캐시는 버퍼 관리자(Buffer Managereng)에 의해 관리된다. 페이지를 읽거나 쓰는 경우 모두 버퍼 캐시에 복사된다. 그 후의 읽기 또는 쓰기 작업은 디스크 버전이 아닌 메모리 내 복사본으로 리다이렉트된다. 메모리 내 캐시가 일정 시간 동안 참조되지 않은 경우에만 버퍼 관리자에 의해 페이지가 디스크에 업데이트된다. 페이지를 디스크에 다시 쓸 때는 비동기 I/O(asynchronous I/Oeng)가 사용되므로, 다른 작업이 I/O 작업이 완료될 때까지 기다릴 필요가 없다. 각 페이지는 작성될 때 해당 체크섬(checksumeng)과 함께 작성된다. 페이지를 다시 읽을 때 체크섬을 다시 계산하고 저장된 버전과 일치시켜 페이지가 손상되거나 변조되지 않았는지 확인한다.
3. 2. 4. 동시성 및 잠금
SQL Server는 여러 클라이언트가 동시에 동일한 데이터베이스를 사용할 수 있도록 허용한다. 따라서 데이터 무결성을 보장하기 위해 공유 데이터에 대한 동시 액세스를 제어해야 한다. 여러 클라이언트가 동일한 데이터를 업데이트하거나 클라이언트가 다른 클라이언트가 변경 중인 데이터를 읽으려고 시도하는 경우가 발생할 수 있다. SQL Server는 동시성 제어에 두 가지 모드를 제공한다: 비관적 동시성 제어와 낙관적 동시성 제어이다.
비관적 동시성 제어를 사용하는 경우 SQL Server는 잠금을 사용하여 동시 액세스를 제어한다. 잠금은 공유 또는 배타적일 수 있다.
잠금은 전체 테이블, 페이지 또는 테이블의 행 단위와 같은 다양한 세분성 수준에 적용될 수 있다. 인덱스의 경우 전체 인덱스 또는 인덱스 리프(leaf)에 적용될 수 있다. 사용할 세분성 수준은 데이터베이스 관리자가 데이터베이스별로 정의한다. 세분화된 잠금 시스템은 더 많은 사용자가 테이블이나 인덱스를 동시에 사용할 수 있도록 허용하지만 더 많은 리소스가 필요하므로 자동으로 성능이 향상되는 것은 아니다. SQL Server에는 잠금보다 덜 강력하지만 리소스 집약도가 낮은 두 가지 더 가벼운 상호 배타 솔루션인 래치(latch)와 스핀락(spinlock)도 포함되어 있다. SQL Server는 일반적으로 사용되지 않는 DMV(동적 관리 뷰) 및 기타 리소스에 이를 사용한다.
또한 SQL Server는 잠금을 획득하는 모든 작업자 스레드를 모니터링하여 교착 상태에 빠지지 않도록 한다. 교착 상태가 발생하는 경우 SQL Server는 교정 조치를 취한다. 대부분의 경우 교착 상태에 얽힌 스레드 중 하나를 종료하고 해당 스레드가 시작한 트랜잭션을 롤백(rollback)한다. 잠금을 구현하기 위해 SQL Server에는 ''잠금 관리자''가 포함되어 있다. 잠금 관리자는 데이터베이스 객체와 해당 객체의 잠금(있는 경우)과 잠금에 대한 기타 메타데이터를 관리하는 메모리 내 테이블을 유지 관리한다. 공유 객체에 대한 액세스는 잠금 관리자에 의해 중재되며, 잠금 관리자는 리소스에 대한 액세스를 허용하거나 차단한다.
SQL Server는 다른 데이터베이스에서 사용되는 다중 버전 동시성 제어(MVCC)와 유사한 낙관적 동시성 제어 메커니즘도 제공한다. 이 메커니즘을 사용하면 행을 덮어쓰는 대신 행을 업데이트할 때마다 행의 새 버전을 만들 수 있다. 즉, 행은 해당 행의 버전을 만든 트랜잭션의 ID로 추가적으로 식별된다. 이전 버전과 새 버전의 행 모두 저장 및 유지 관리되지만 이전 버전은 데이터베이스에서 `Tempdb`로 식별되는 시스템 데이터베이스로 이동된다. 행이 업데이트되는 동안 다른 요청은 (잠금과 달리) 차단되지 않고 이전 버전의 행에서 실행된다. 다른 요청이 업데이트 문인 경우 행의 두 가지 다른 버전이 생성되며, 두 버전 모두 해당 트랜잭션 ID로 식별되어 데이터베이스에 저장된다.
3. 2. 5. 데이터 검색 및 프로그래밍 기능
SQL Server 데이터베이스에서 데이터를 검색하는 주요 방법은 데이터베이스 쿼리를 이용하는 것이다. 쿼리는 SQL의 변형인 T-SQL을 사용하여 표현된다. T-SQL은 마이크로소프트 SQL Server가 Sybase SQL Server와의 상속 관계로 인해 공유하는 방언이다. 쿼리는 선언적으로 검색할 내용을 지정한다. 쿼리가 주어지면 쿼리 프로세서는 요청된 데이터를 검색하는 데 필요한 단계 순서를 파악하여 이를 처리한다. 쿼리를 실행하는 데 필요한 작업 순서를 쿼리 계획이라고 한다. 동일한 쿼리를 처리하는 여러 가지 방법이 있을 수 있다. 예를 들어, 조인문과 선택문이 포함된 쿼리의 경우, 두 테이블에서 조인을 실행한 다음 결과에 대해 선택을 실행하는 것과 각 테이블에서 선택한 다음 조인을 실행하는 것은 동일한 결과를 제공하지만 다른 실행 계획을 생성한다. 이러한 경우 SQL Server는 가능한 한 짧은 시간 내에 결과를 생성할 것으로 예상되는 계획을 선택한다. 이를 쿼리 최적화라고 하며 쿼리 프로세서 자체에서 수행한다.
SQL Server에는 비용 기반 쿼리 최적화 프로그램이 포함되어 있으며, 쿼리를 실행하는 데 필요한 리소스 측면에서 비용을 최적화하려고 시도한다. 쿼리가 주어지면 쿼리 최적화 프로그램은 데이터베이스 스키마, 데이터베이스 통계 및 해당 시점의 시스템 부하를 확인한다. 그런 다음 쿼리에서 참조하는 테이블에 액세스하는 순서, 작업을 실행하는 순서 및 테이블에 액세스하는 데 사용할 액세스 방법을 결정한다. 예를 들어, 테이블에 관련 색인이 있는 경우 색인을 사용할지 여부를 결정한다. 대부분의 열에 대해 고유하지 않은 열(낮은 "선택성")에 색인이 있는 경우 데이터에 액세스하기 위해 색인을 사용하는 것이 좋지 않을 수 있다. 마지막으로 쿼리를 병렬로 실행할지 여부를 결정한다. 병렬 실행은 총 프로세서 시간 측면에서는 더 비용이 많이 들지만, 실행이 실제로 다른 프로세서로 분할되므로 더 빠르게 실행될 수 있다. 쿼리에 대한 쿼리 계획이 생성되면 임시로 캐시된다. 동일한 쿼리를 더 많이 호출하는 경우 캐시된 계획이 사용된다. 사용되지 않는 계획은 일정 시간 후에 삭제된다.
SQL Server는 또한 저장 프로시저를 정의할 수 있도록 허용한다. 저장 프로시저는 서버 자체에 저장되는(일반 쿼리와 같이 클라이언트 애플리케이션에서 발행되지 않음) 매개변수화된 T-SQL 쿼리이다. 저장 프로시저는 클라이언트에서 보낸 값을 입력 매개변수로 받아들이고 결과를 출력 매개변수로 다시 보낼 수 있다. 정의된 함수와 다른 저장 프로시저(동일한 저장 프로시저 포함, 최대 설정된 횟수)를 호출할 수 있다. 선택적으로 액세스 권한을 제공할 수 있다. 다른 쿼리와 달리 저장 프로시저에는 실행 시 실제 쿼리로 확인하는 데 사용되는 관련 이름이 있다. 또한 코드를 매번 클라이언트에서 보낼 필요가 없으므로(이름으로 액세스할 수 있으므로) 네트워크 트래픽이 줄어들고 성능이 다소 향상된다. 저장 프로시저의 실행 계획도 필요에 따라 캐시된다.
3. 2. 6. T-SQL
T-SQL(Transact-SQL)은 마이크로소프트가 자체적으로 개발한 절차적 언어로, SQL 서버의 기능을 확장하는 역할을 한다. 이 언어는 표준 SQL의 명령어 집합에 더해, 데이터를 조작하는 DML 명령어와 데이터 구조를 정의하는 DDL 명령어를 REPL(Read-Eval-Print-Loop) 방식으로 확장하여 SQL 서버의 설정, 보안, 데이터베이스 통계 관리 같은 추가 기능을 제공한다.
T-SQL은 데이터베이스 스키마를 만들거나 변경하고, 데이터베이스 안의 데이터를 입력하거나 수정하며, 서버 자체를 감시하고 관리하는 등 SQL 서버에서 할 수 있는 다양한 작업에 필요한 키워드를 포함한다. 클라이언트 애플리케이션은 T-SQL 쿼리나 명령문을 SQL 서버로 보내 기능을 사용하고, 서버는 이를 처리한 뒤 결과나 오류를 클라이언트 애플리케이션으로 되돌려준다. 이를 위해 서버는 통계 정보를 볼 수 있는 읽기 전용 테이블을 제공한다. 관리 기능은 시스템에 미리 정의된 저장 프로시저를 통해 제공되며, 이는 T-SQL 쿼리를 통해 호출하여 관리 작업을 수행할 수 있다. 또한 T-SQL을 사용하면 '연결된 서버'를 만들 수 있는데, 이를 통해 하나의 쿼리로 여러 서버에서 동시에 작업을 처리하는 것이 가능하다.
3. 2. 7. SQL Server Native Client
SQL Server Native Client는 마이크로소프트 SQL 서버 2005 이상 버전을 위한 기본적인 클라이언트 측 데이터 접근 라이브러리이다. 이는 SQL 서버의 여러 기능을 기본적으로 지원하는데, 주요 기능은 다음과 같다.
SQL Server Native Client는 ADO나 OLE DB 같은 다른 데이터 접근 기술을 위한 SQL 서버 플러그인 내부에서도 사용된다. 또한, 일반적인 데이터 접근 계층을 거치지 않고 직접 사용할 수도 있다.
2011년 11월 28일에는 리눅스용 SQL 서버 ODBC 드라이버의 미리 보기 버전이 출시되었다.
3. 2. 8. SQL CLR
Microsoft SQL Server 2005부터는 SQL CLR(Common Language Runtime)이라는 구성 요소를 통해 .NET Framework와 통합된다. 다른 .NET Framework 애플리케이션과 달리, SQL Server 자체가 .NET Framework 런타임을 직접 호스팅한다. 이는 .NET Framework의 메모리, 스레딩, 리소스 관리를 기본 윈도우 운영 체제가 아닌 SQLOS 자체에서 처리한다는 의미이다. SQLOS는 .NET 코드에 대한 교착 상태 감지 및 해결 서비스도 제공한다. SQL CLR을 사용하면 저장 프로시저나 트리거 같은 데이터베이스 개체를 C#이나 VB.NET을 포함한 모든 관리되는 .NET 언어로 작성할 수 있다. 또한 관리 코드를 사용하여 데이터베이스에 영구적으로 저장될 수 있는 UDT(사용자 정의 형식)를 정의하는 것도 가능하다. 이렇게 작성된 관리 코드는 CLI 어셈블리로 컴파일되고 형식 안전성 검사를 거친 후 데이터베이스에 등록된다. 등록된 코드는 다른 프로시저처럼 호출하여 사용할 수 있다. 하지만 SQL CLR 환경에서 코드를 실행할 때는 사용할 수 있는 기본 클래스 라이브러리의 범위가 제한된다. 예를 들어, 사용자 인터페이스 관련 기능 대부분의 API는 사용할 수 없다.
SQL CLR용 코드를 작성할 때 데이터베이스에 저장된 데이터에 접근하려면, 다른 관리되는 애플리케이션과 마찬가지로 ADO.NET API를 사용한다. 그러나 일반적인 방식으로는 코드가 실행 중인 세션과 별개의 새로운 데이터베이스 세션이 생성된다. 이를 피하기 위해 SQL Server는 ADO.NET 공급자에 몇 가지 개선 사항을 제공하여, 코드가 실행 중인 동일한 세션으로 연결을 리디렉션할 수 있게 한다. 이러한 연결 방식을 컨텍스트 연결(Context Connection)이라고 하며, 연결 문자열에서 'context connection' 매개 변수를 'true'로 설정하여 사용한다. SQL Server는 이 외에도 ADO.NET API에 여러 개선 사항을 추가했다. 여기에는 표 형식 데이터나 단일 행 데이터를 처리하는 클래스, 데이터베이스 내부 메타데이터를 다루는 클래스 등이 포함된다. 또한 XQuery 지원을 포함하여 SQL Server의 XML 기능에 접근할 수 있도록 지원한다. 새로운 XML 데이터 형식(쿼리, 값, 노드 함수)의 도입으로 이러한 개선 사항들은 T-SQL 프로시저에서도 활용 가능하다.
3. 3. 서비스
SQL Server는 핵심 데이터베이스 관리 시스템 외에도 다양한 부가 서비스를 포함하고 있다. 이러한 서비스들은 데이터베이스 시스템 운영에 필수는 아니지만, 데이터 관리 및 분석 역량을 강화하는 부가가치를 제공한다. 이 서비스들은 SQL Server의 일부 구성 요소로 실행되거나 별도의 Windows 서비스 프로세스로 작동하며, 자체 API를 통해 제어하고 상호 작용할 수 있다.[30]
주요 부가 서비스는 다음과 같다.3. 3. 1. Machine Learning Services
SQL Server 2016 버전에서는 데이터베이스 안에서 R 언어를 사용할 수 있는 R Services 기능이 처음 도입되었다. 이후 SQL Server 2017 버전부터는 R 언어뿐만 아니라 Python까지 지원하도록 기능이 확장되면서 명칭이 Machine Learning Services로 변경되었다.
SQL Server Machine Learning Services는 SQL Server 인스턴스 내부에서 직접 실행되기 때문에, 기계 학습이나 데이터 분석 작업을 할 때 데이터를 네트워크 외부로 전송할 필요가 없고 사용자 개인 컴퓨터의 메모리 용량에 크게 제약받지 않는다는 장점이 있다.[29] 이 서비스에는 데이터 과학 분야에서 자주 사용되는 여러 패키지가 포함된 Microsoft의 R 및 Python 배포판이 기본적으로 제공된다. 또한, 대규모 기계 학습 모델을 만드는 데 유용한 마이크로소프트 고유의 패키지(예: revoscalepy, RevoScaleR, microsoftml)들도 함께 포함되어 있다.[29]
데이터 분석가들은 자신의 컴퓨터에서 원격으로 SQL Server에 접속하여 R 또는 Python 스크립트 실행을 요청할 수 있다. 또는 Transact-SQL(T-SQL) 쿼리 안에 R/Python 코드를 외부 스크립트 형태로 넣어 실행하는 것도 가능하다. 이렇게 만들어지고 훈련된 기계 학습 모델은 SQL Server 데이터베이스 안에 저장해 두었다가, 필요할 때 데이터를 예측하거나 분류하는 작업(점수 매기기)에 활용할 수 있다.
3. 3. 2. Service Broker
Service Broker는 SQL Server 인스턴스 내부에서 프로그래밍 환경으로 사용되거나, 인스턴스 간 애플리케이션 통신을 위해 활용된다. 인스턴스 간의 통신이 필요할 경우, Service Broker는 TCP/IP를 통해 메시지를 교환하며 서로 다른 구성 요소들을 동기화하는 역할을 수행한다. 데이터베이스 엔진의 일부로 작동하며, SQL Server 애플리케이션에 안정적인 메시징 및 메시지 큐 플랫폼을 제공한다.[30]
Service Broker 서비스는 다음과 같은 주요 구성 요소로 이루어진다.[12]
또한 Service Broker는 보안 기능도 지원하여, 네트워크 통신 과정에서 NTLM, Kerberos 또는 인증서를 통한 사용자 인증을 수행할 수 있다. 더불어 메시지의 무결성을 검증하고 암호화하여 데이터 보안을 강화하는 기능도 제공한다.[12]
3. 3. 3. Replication Services
SQL Server 복제 서비스는 데이터베이스 개체 전체 또는 일부를 복제하고, 네트워크 상의 다른 데이터베이스 서버나 클라이언트 측의 데이터베이스 캐시일 수 있는 복제 에이전트 간에 동기화하는 데 사용된다. 복제 서비스는 게시자/구독자 모델을 따른다. 즉, 변경 사항은 하나의 데이터베이스 서버("게시자")에서 보내고 다른 서버("구독자")에서 수신한다. SQL Server는 세 가지 유형의 복제를 지원한다.3. 3. 4. Analysis Services
SQL Server Analysis Services(SSAS)는 SQL Server 데이터베이스에 OLAP 및 데이터 마이닝 기능을 추가한다. OLAP 엔진은 데이터에 대해 MOLAP, ROLAP, HOLAP 저장 모드를 지원한다. Analysis Services는 기본 통신 프로토콜로 분석용 XML 표준을 지원하며, 큐브 데이터는 MDX 및 LINQ 쿼리를 사용하여 접근할 수 있다.
데이터 마이닝 관련 기능은 DMX 쿼리 언어를 통해 제공된다. Analysis Services는 데이터 마이닝을 위해 결정 트리, 군집 알고리즘, 나이브 베이즈 알고리즘, 시계열 분석, 시퀀스 군집 알고리즘, 선형 및 로지스틱 회귀 분석, 신경망 등 다양한 알고리즘을 포함한다.
3. 3. 5. Reporting Services
SQL Server Reporting Services(SSRS)는 SQL Server 데이터베이스에서 수집된 데이터를 위한 보고서 생성 환경이다. 웹 인터페이스를 통해 관리되며, 사용자 지정 보고서 애플리케이션 개발을 지원하기 위해 웹 서비스 인터페이스를 제공한다. 보고서는 RDL 파일 형식으로 생성된다.[34]
보고서는 최신 버전의 Microsoft Visual Studio(Visual Studio .NET 2003, 2005, 및 2008)[35]와 함께 설치된 비즈니스 인텔리전스 개발 스튜디오 또는 포함된 보고서 작성기를 사용하여 디자인할 수 있다. 작성된 RDL 파일은 Excel, PDF, CSV, XML, BMP, EMF, GIF, JPEG, PNG, TIFF[36]와 HTML 웹 아카이브를 포함한 다양한 형식으로 렌더링할 수 있다.[37][38]
3. 3. 6. Notification Services
Notification Services는 원래 SQL Server 2000 출시 이후 추가 기능으로 도입되었으며[39], SQL Server 2005 버전에서 처음이자 마지막으로 SQL Server 플랫폼의 일부로 포함되었다.[40][41] 이는 데이터의 변화에 기반하여 알림을 생성하고 이를 구독자에게 전송하는 기능을 제공했다. 구독자는 특정 이벤트나 트랜잭션(데이터베이스 서버에 트리거로 등록됨)이 발생했을 때 알림을 받도록 미리 등록할 수 있었다. 이벤트가 발생하면 Notification Services는 SMTP, SOAP, 또는 파일 시스템에 파일로 쓰는 세 가지 방식 중 하나를 사용하여 구독자에게 알림 메시지를 보냈다.[42] 그러나 Notification Services는 2008년 8월 SQL Server 2008이 출시되면서 지원이 중단되었고, 더 이상 SQL Server 데이터베이스 플랫폼의 공식 지원 구성 요소가 아니다.[40][41]
3. 3. 7. Integration Services
SQL Server Integration Services (SSIS)는 SQL Server를 위한 ETL 기능을 제공한다. 이를 통해 데이터 가져오기, 데이터 통합, 그리고 데이터 웨어하우징 요구사항을 충족시킬 수 있다.[43] Integration Services는 다양한 원본에서 데이터를 추출하고, 데이터를 조회하며, 데이터를 변환하는 과정을 포함한다. 데이터 변환에는 집계, 중복 제거, 데이터 정규화/비정규화, 데이터 병합 등이 있다.[43] 이렇게 변환된 데이터는 목표하는 데이터베이스나 파일로 내보낼 수 있다. Integration Services는 이러한 워크플로를 구축하기 위한 그래픽 사용자 인터페이스(GUI) 도구를 포함하고 있다.[43]
3. 3. 8. Full Text Search Service
SQL Server 전체 텍스트 검색 서비스(Full Text Search Service, FTS)는 SQL Server 데이터베이스에 저장된 비정형 텍스트 데이터를 위한 특수한 색인 생성 및 쿼리 서비스이다. 전체 텍스트 검색 색인은 문자 기반의 텍스트 데이터가 있는 모든 열(column)에 만들 수 있으며, 이를 통해 텍스트 열 내의 특정 단어를 효율적으로 검색할 수 있다. 이는 SQL의 `LIKE` 연산자를 사용하는 것보다 성능 면에서 더 유리할 수 있다.
전체 텍스트 검색은 단순히 정확히 일치하는 결과만 찾는 것이 아니라, 0에서 1000 사이의 순위 값으로 표현되는 근사 일치(approximate matches)를 허용한다. 순위 값이 높을수록 원본 문자열과의 관련성이 높다는 의미이다. 또한, 단어의 언어적 형태 변화(예: 동사의 시제 변화)까지 고려하는 언어적 일치(linguistic matching), 즉 '굴절 검색' 기능도 제공한다. 이 경우 정확한 일치보다는 낮은 순위 값을 갖게 된다. 검색하려는 단어들이 쿼리에 명시된 순서와 다르더라도 서로 가까이 위치하면 일치하는 것으로 간주하는 근접 검색(proximity searching)도 지원한다. T-SQL에서는 전체 텍스트 검색 기능을 활용하기 위한 특별한 연산자를 제공한다.
전체 텍스트 검색 엔진은 '필터 디먼(filter daemon)' 프로세스('msftefd.exe')와 '검색(search)' 프로세스('msftesql.exe')라는 두 개의 주요 프로세스로 구성되어 SQL Server와 상호작용한다. 검색 프로세스 안에는 전체 텍스트 색인을 만드는 '색인 생성기(indexer)'와 전체 텍스트 쿼리를 처리하는 '전체 텍스트 쿼리 프로세서(full-text query processor)'가 포함된다.
색인 생성기는 데이터베이스 내 텍스트 열의 내용을 스캔하여 색인을 만든다. 텍스트뿐만 아니라 이진(binary) 데이터가 저장된 열도 색인 생성이 가능한데, 이때는 iFilter라는 구성 요소를 사용하여 이진 데이터 덩어리(blob)에서 의미 있는 텍스트 정보를 추출한다. 예를 들어, Microsoft Word 문서 파일이 데이터베이스에 이진 형태로 저장된 경우, iFilter를 통해 문서 내 텍스트를 읽어올 수 있다. 이 iFilter는 필터 디먼 프로세스 내에서 실행된다. 텍스트가 추출되면, 필터 디먼 프로세스는 이 텍스트를 단어 단위로 분해하여 색인 생성기로 전달한다. 색인 생성기는 전달받은 단어들 중에서 'A', '그리고' 와 같이 너무 자주 등장하여 검색에 큰 의미가 없는 '잡음 단어(noise words)'를 걸러낸다. 남은 단어들을 사용하여 각 단어가 어느 열에서 발견되었는지를 연결하는 역색인을 생성한다. SQL Server 자체에는 테이블의 데이터 변경을 감지하여 색인 생성기가 색인을 최신 상태로 업데이트하도록 알리는 '수집기(gatherer)' 구성 요소가 포함되어 있다.
사용자가 전체 텍스트 쿼리를 실행하면, 이 쿼리는 먼저 SQL Server 쿼리 프로세서로 전달된 후, 검색 프로세스 내의 전체 텍스트 쿼리 프로세서로 넘겨진다. 전체 텍스트 쿼리 프로세서는 쿼리문을 구성 단어들로 분해하고 잡음 단어를 제거하며, 내장된 시소러스(유의어 사전)를 참조하여 각 단어의 다양한 언어적 변형(동의어, 관련어 등)을 찾는다. 그런 다음 이 단어들을 바탕으로 미리 생성된 역색인을 검색하고, 검색 결과의 정확도 순위를 계산한다. 최종 결과는 SQL Server 프로세스를 통해 사용자에게 반환된다.
4. 에디션
마이크로소프트는 다양한 기능 세트와 사용자를 대상으로 여러 에디션의 SQL 서버를 제공한다. 에디션은 규모에 따라 기능과 성능이 다르다.
SQL Server 2016 서비스 팩 1부터는 에디션별 기능 차이가 완화되어, Express Edition이나 Standard Edition에서도 이전에는 Enterprise Edition에서만 제공되던 일부 기능을 사용할 수 있게 되었다.[13] 또한, SQL Server 2016 버전 이후로는 x64 아키텍처만 제공되며, x86(32비트) 및 IA-64 버전은 더 이상 제공되지 않는다.
아래는 주요 SQL Server 버전별 에디션 지원 현황이다.
| 제품명 | Enterprise | Business Intelligence | Standard | Web | Developer | Express | Workgroup | Compact | 기타 |
|---|---|---|---|---|---|---|---|---|---|
| Microsoft SQL Server 2000 | ✓ | ✓ | ✓ | ✓ | Personal / Desktop Engine (MSDE) / Enterprise Evaluation / Windows CE | ||||
| Microsoft SQL Server 2005 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | Evaluation / Runtime | ||
| Microsoft SQL Server 2008 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | Express with Tools / Express with Advanced Services | |
| Microsoft SQL Server 2012 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Microsoft SQL Server 2014 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Microsoft SQL Server 2016 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Microsoft SQL Server 2017 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Microsoft SQL Server 2019 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Microsoft SQL Server 2022 | ✓ | ✓ | ✓ | ✓ | ✓ |
4. 1. 주요 에디션
SQL 서버는 기능과 대상 사용자에 따라 여러 에디션으로 나누어 배포된다. 주요 에디션은 다음과 같다.[50]- 엔터프라이즈 (Enterprise): 핵심 데이터베이스 엔진과 모든 추가 서비스를 포함하며, SQL 서버 클러스터 생성 및 관리를 위한 다양한 도구를 제공한다. 최대 524페타바이트의 데이터베이스 관리, 12테라바이트의 메모리, 640개의 논리 프로세서(CPU 코어)를 지원하는 등 대규모 기업 환경 및 고성능 요구 사항에 적합한 최상위 에디션이다. (x86, x64, IA-64 지원)[19]
- 스탠다드 (Standard): 핵심 데이터베이스 엔진과 독립형 서비스를 포함한다. 엔터프라이즈 에디션과 비교했을 때, 지원하는 클러스터 노드 수가 적고, 핫 추가 메모리(서버 실행 중 메모리 추가 기능)나 병렬 인덱스와 같은 일부 고가용성 기능이 제외된다. 중견 기업이나 대규모 부서 시스템에 적합하다. SQL Server 2005부터 64비트 OS를 지원한다. (x86, x64, IA-64 지원)[21]
- 웹 (Web): 웹 호스팅 환경에 최적화된 저비용 TCO 옵션을 제공하는 에디션이다. SQL Server 2008 R2를 마지막으로 후속 에디션이 제공되지 않는다.[23] (x86, x64 지원)
- 비즈니스 인텔리전스 (Business Intelligence): SQL Server 2012에서 도입되었으며, 셀프 서비스 및 기업 비즈니스 인텔리전스 기능에 중점을 둔다. 스탠다드 에디션의 기능에 더해 파워 피벗, 파워 뷰, BI 시맨틱 모델, 마스터 데이터 서비스, 데이터 품질 서비스, xVelocity 인메모리 분석 등 다양한 BI 도구를 포함한다. SQL Server 2014 이후 버전에서는 별도 에디션으로 제공되지 않고 다른 에디션에 기능이 통합된 것으로 보인다.
- 워크그룹 (Workgroup): 핵심 데이터베이스 기능만 포함하며 추가 서비스는 제공하지 않는다. 소규모 시스템을 대상으로 하며, Express 에디션과 달리 데이터베이스 크기 제한 등이 없다. SQL Server 2008 R2를 마지막으로 SQL Server 2012부터는 지원이 중단되었다.[22] (x86 지원)
- 익스프레스 (Express): SQL Server Express는 무료로 제공되는 에디션으로, 핵심 데이터베이스 엔진을 포함한다. 데이터베이스 수나 사용자 수에는 제한이 없지만, 사용할 수 있는 하드웨어 자원에 제한(프로세서 1개, 메모리 1GB, 데이터베이스 파일 최대 10GB - 2008 R2 이전은 4GB)이 있다. 주로 개인 개발자나 소규모 상용 애플리케이션에 사용되며, MSDE를 대체하기 위해 만들어졌다. 관리 도구인 SQL Server Management Studio Basic이 포함된 ''Express with Tools'' 버전과 전체 텍스트 검색 및 보고 서비스 기능이 추가된 ''Express with Advanced Services'' 버전도 존재한다.[25] (x86, x64 지원)
- 디벨로퍼 (Developer): 개발 및 테스트 목적으로 사용되는 에디션이다. 엔터프라이즈 에디션과 동일한 기능을 제공하지만, 라이선스상 실제 운영 환경에서는 사용할 수 없다. 과거에는 유료였으나, 2016년 3월부터 SQL Server 2014 버전 이후로는 무료로 제공되기 시작했다.[14] SQL Server 2016 설치 시 평가판 대신 선택할 수 있으며, Enterprise Evaluation 에디션과 달리 사용 기간 제한이 없는 것이 특징이다.[16] (x86, x64, IA-64 지원)[20]
이 외에도 특정 목적을 위한 다양한 에디션이 존재한다.
- Azure SQL Database: Microsoft Azure에서 PaaS 형태로 제공되는 클라우드 기반 SQL Server 버전이다.
- Azure SQL Data Warehouse (현 Azure Synapse Analytics): 분석 워크로드를 위한 MPP(대규모 병렬 처리) 아키텍처를 갖춘 클라우드 기반 데이터 웨어하우스 서비스이다.
- 콤팩트 (Compact, SQL CE): 임베디드 데이터베이스 엔진으로, 모바일 기기나 데스크톱 애플리케이션 내부에 포함되어 사용된다. 다른 에디션과 바이너리를 공유하지 않으며 기능이 제한적이다(최대 DB 크기 4GB, 저장 프로시저/뷰 미지원 등). 기능적으로는 Mobile Edition 및 Microsoft Jet Database Engine의 후속에 해당한다.[24] (ARM, MIPS, SH4, x86 지원)
- LocalDB: SQL Server Express 2012부터 도입된 경량 버전으로, 주로 개발자용으로 사용되며 애플리케이션에 포함시켜 배포하기 용이하다. 임베디드 데이터베이스 형태로도 사용할 수 있다.
- 임베디드 (Embedded, SSEE): Windows Internal Database라고도 하며, 특정 Windows 서비스(예: WSUS, Windows SharePoint Services) 전용으로 사용되는 특별 구성 버전이다.[27] 외부 네트워크 연결이 제한되며, 내부 애플리케이션과는 파이프를 통해서만 연결할 수 있다.
- 평가판 (Evaluation): 엔터프라이즈 에디션의 모든 기능을 180일 동안 무료로 사용할 수 있는 버전이다. 기간 만료 후에는 서버 서비스가 중지된다.
- 기타: Fast Track, Analytics Platform System (APS), Datawarehouse Appliance Edition 등 특정 하드웨어나 대규모 데이터 처리에 최적화된 에디션도 있다.
SQL Server 2016 서비스 팩 1부터는 에디션 간 기능 차이가 일부 완화되어, 이전에는 엔터프라이즈 에디션에서만 사용할 수 있었던 일부 기능들이 스탠다드나 익스프레스 에디션에서도 제공되기 시작했다.[13] 또한, SQL Server 2016 버전부터는 x64 아키텍처만 지원하며, x86(32비트) 및 IA-64 버전은 더 이상 제공되지 않는다.
| 제품명 | Enterprise | Business Intelligence | Standard | Web | Developer | Express | Workgroup | Compact | 기타 |
|---|---|---|---|---|---|---|---|---|---|
| Microsoft SQL Server 2000 | ✓ | ✓ | ✓ | ✓ | Personal / Desktop Engine (MSDE) / Enterprise Evaluation / Windows CE | ||||
| Microsoft SQL Server 2005 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | Evaluation / Runtime | ||
| Microsoft SQL Server 2008 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | Express with Tools / Express with Advanced Services | |
| Microsoft SQL Server 2012 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Microsoft SQL Server 2014 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| Microsoft SQL Server 2016 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Microsoft SQL Server 2017 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Microsoft SQL Server 2019 | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| Microsoft SQL Server 2022 | ✓ | ✓ | ✓ | ✓ | ✓ |
4. 2. 특수 에디션
- '''Azure''': Microsoft Azure SQL Database는 클라우드 기반의 마이크로소프트 SQL 서버 버전으로, Microsoft Azure에서 PaaS로 제공된다.
- '''Azure MPP''': Azure SQL 데이터 웨어하우스는 분석 워크로드를 위한 MPP(대규모 병렬 처리) 아키텍처를 갖춘 마이크로소프트 SQL 서버의 클라우드 기반 버전으로, Microsoft Azure에서 PaaS로 제공된다.
- '''Compact (SQL CE)''': Compact 에디션은 임베디드 데이터베이스 엔진이다. 다른 SQL 서버 에디션과 달리, SQL CE 엔진은 SQL Mobile(원래 휴대용 기기용으로 설계됨)을 기반으로 하며 동일한 바이너리를 공유하지 않는다. 크기가 작아(1MB DLL 크기) 다른 에디션에 비해 기능이 상당히 축소되었다. 예를 들어, 표준 데이터 형식의 일부만 지원하며, 저장 프로시저나 뷰, 다중 문장 배치 등을 지원하지 않는다. 데이터베이스 크기는 최대 4GB로 제한되며, 윈도우 서비스로 실행할 수 없고 사용하는 애플리케이션 내에서 호스팅되어야 한다. 3.5 버전에는 ADO.NET 동기화 서비스 지원이 포함되었다. SQL CE는 SQL 서버와 달리 ODBC 연결을 지원하지 않는다.
- '''Developer''': SQL 서버 Developer 에디션은 SQL 서버 Enterprise 에디션과 동일한 기능을 포함하지만, 라이선스상 개발 및 테스트 시스템으로만 사용할 수 있으며 프로덕션 서버로는 사용할 수 없다. 2016년 초부터 마이크로소프트는 이 에디션을 무료로 공개했다.
- '''Embedded (SSEE)''': SQL 서버 2005 Embedded 에디션은 특정 윈도우 서비스에서만 접근할 수 있도록 특별히 구성된 SQL 서버 익스프레스 데이터베이스 엔진의 명명된 인스턴스이다. "Internal Database"라고도 불리며, WSUS나 Windows SharePoint Services의 백엔드 데이터베이스로 자동 설치되기도 한다. 외부 네트워크에서는 데이터베이스에 연결할 수 없으며, 내부 애플리케이션에서는 파이프를 통해서만 연결할 수 있다. SharePoint Services에서 사용할 경우 데이터베이스 크기 제한이 해제되지만, 다른 애플리케이션에서는 사용할 수 없다.
- '''Evaluation''': SQL 서버 Evaluation 에디션, 또는 ''Trial Edition''으로도 알려져 있으며, Enterprise 에디션의 모든 기능을 갖추고 있지만 180일로 사용 기간이 제한된다. 기간이 지나면 도구는 계속 실행되지만 서버 서비스는 중지된다.
- '''Fast Track''': SQL 서버 Fast Track은 엔터프라이즈 규모의 데이터 웨어하우징 스토리지 및 비즈니스 인텔리전스 처리를 위해 특별히 설계되었으며, Fast Track에 최적화된 참조 아키텍처 하드웨어에서 실행된다.
- '''LocalDB''': SQL 서버 익스프레스 2012에 도입된 LocalDB는 애플리케이션 개발자를 위해 설계된 최소한의 온디맨드 SQL 서버 버전이다. 임베디드 데이터베이스로도 사용할 수 있다.
- '''Analytics Platform System (APS)''': 이전에는 Parallel Data Warehouse (PDW)였으며, 수백 테라바이트와 같은 대규모 데이터 웨어하우징에 최적화된 대규모 병렬 처리(MPP) SQL 서버 어플라이언스이다.
- '''Datawarehouse Appliance Edition''': Dell 및 HP와의 제휴를 통해 어플라이언스의 일부로 사전 설치 및 구성되며, Fast Track 아키텍처를 기반으로 한다. 이 에디션에는 SQL Server Integration Services, Analysis Services 또는 Reporting Services가 포함되어 있지 않다.
4. 3. 단종된 에디션
마이크로소프트는 과거에 다음과 같은 SQL Server 에디션을 제공했으나, 현재는 단종되었다.- Microsoft Data Engine (MSDE) 1.0: SQL Server 7.0 버전을 기반으로 한 초기 데이터 엔진이었다. 이후 Microsoft SQL Server Data Engine으로 대체되었다.[6]
- Microsoft SQL Server Data Engine (MSDE): SQL Server 2000 버전을 기반으로 하며, 데스크톱 엔진(Desktop Engine) 또는 데스크톱 에디션(Desktop Edition)이라고도 불렸다. 주로 애플리케이션 구성 요소로 사용하기 위한 것으로, 그래픽 사용자 인터페이스(GUI) 관리 도구가 포함되어 있지 않았다. 나중에 마이크로소프트는 웹 관리 도구도 제공했다. 일부 버전의 Microsoft Access, Microsoft 개발 도구 및 다른 버전의 SQL Server에 포함되어 배포되었다.[7] SQL Server 2005 버전부터는 Express Edition으로 대체되었다.
- Personal Edition: SQL Server 2000 버전에서 제공된 에디션이었다. MSDE와 같이 작업량 또는 연결 제한이 있었지만 데이터베이스 크기 제한은 없었다. 표준 관리 도구가 포함되었으며, 주로 모바일/오프라인 프록시로 사용하기 위한 것으로, SQL Server 2000 Standard Edition과 함께 사용하도록 라이선스가 부여되었다.[7] SQL Server 2000의 Standard Edition과 유사하지만, Windows 98에서는 전체 텍스트 검색이 작동하지 않고, 트랜잭션 복제는 구독자로 제한되었다.[8] 이 에디션 역시 SQL Server 2005 버전부터 Express Edition으로 대체되었다.
- Datacenter Edition: SQL Server 2008 R2 Datacenter는 SQL Server의 모든 기능을 갖춘 에디션이었으며, 높은 수준의 애플리케이션 지원 및 확장성이 필요한 데이터 센터용으로 설계되었다. 256개의 논리 프로세서와 사실상 무제한의 메모리를 지원하며 StreamInsight Premium Edition이 함께 제공되었다. Datacenter Edition은 SQL Server 2012에서 더 이상 제공되지 않으며, 모든 기능은 SQL Server 2012 Enterprise Edition에서 사용할 수 있다.
- Windows CE Edition: SQL Server 2000 버전에서 Windows CE 운영체제용으로 도입된 에디션이었다.[9] 이후 SQL Server 2005 Mobile Edition으로 대체되었다.
- SQL Server 2005 Mobile Edition: Windows CE Edition의 후속 버전이었으며, 한 번의 릴리스 이후 SQL Server 2005 Compact Edition으로 대체되었다.
- SQL Server 2005 Compact Edition: Mobile Edition의 후속 버전이었으며, 한 번의 릴리스 이후 SQL Server Compact 3.5로 대체되었다.
- Workgroup Edition: 소규모 시스템을 위한 에디션이었다. Express Edition과 달리 데이터베이스 크기 등의 제한이 제거되었다. SQL Server 2008 R2를 마지막으로 폐지되었으며, 2012에서는 후속 에디션이 제공되지 않는다. (x86)
- Web Edition: 웹 서비스에 맞춘 라이선스 모델의 제품이었다. SQL Server 2008 R2를 마지막으로 폐지되었으며, 2012에서는 후속 에디션이 제공되지 않는다. (x86, x64)
4. 4. 무료 에디션
무료 버전은 개인 용도 및 많은 소규모 상용 애플리케이션에서 사용되므로, 아래에 자세히 설명한다.'''Microsoft SQL Server Desktop Engine'''(Microsoft SQL Server Desktop Engine, MSDE, 초기 버전은 Microsoft Data Engine)은 사용 가능한 메모리 크기 및 데이터베이스 크기 등에 제한이 있었지만 무료로 사용할 수 있었으며, 학습용 또는 소규모 웹 애플리케이션이나 데스크톱 애플리케이션 등에 사용되었다. 그래픽 기반 관리 도구가 제공되지 않아 주로 명령줄 기반 유틸리티(osql.exe)를 사용하여 관리했다. Windows Vista부터는 지원이 중단되었다.
MSDE의 후속 제품은 SQL Server Express Edition이다.
'''SQL Server Express Edition'''은 MSDE의 후속 제품으로, 계속해서 무료로 공개되고 있다. MSDE에서는 사용할 수 없었던 관리 도구(SQL Server Management Studio Express)도 공개되어 관리가 용이해졌다. 또한, 데이터베이스의 최대 크기가 확장되었다. 그러나 물리적 CPU 인식이 1개로 제한되거나 메모리 사용량이 1GB로 축소되는 등의 제약도 있다. 또한 MSDE 2000에 있던 작업 스케줄러 등의 기능이 제외되었다.
고급 기능은 사용할 수 없지만(SQL Server 2016 서비스 팩 1 이후로는 기존에는 Enterprise Edition에서만 지원되던 기능 중 일부가 사용 가능해졌다[13]), 그 대신 Workgroup Edition 이상의 에디션과 동등한 프로토콜 및 Transact-SQL을 사용할 수 있다. 이는 무료 개발 플랫폼을 제공함으로써 사용자 확보를 도모하려는 마이크로소프트의 전략적 제품이라고 할 수 있다. 비슷한 개념의 전략을 취하는 것으로는 IBM DB2-C가 있다.
'''Express Edition with Advanced Services'''는 Express Edition의 기능에 더하여 전체 텍스트 검색(Full-Text Search), 로컬 데이터베이스의 Reporting Services 실행 기능, 관리 도구가 포함된 무료 에디션이다.
'''SQL Server Developer Edition'''은 개발, 테스트 시스템, 데모 용도로만 사용 가능한 에디션이며(운영 용도로는 사용할 수 없음), 과거에는 유료 제품으로 제공되었으나, 2016년 3월에 SQL Server 2014 버전부터 무료 제공이 발표되었고[14], SQL Server 2016 출시와 함께 본격적으로 무료 이용이 가능해졌다. SQL Server 2016 이후로는 평가판 설치 시 Developer Edition을 선택할 수 있다.
무료 에디션이지만, Express Edition과 달리 Enterprise Edition과 동등한 기능과 하드웨어 리소스를 사용할 수 있으며, SQL Server의 모든 기능을 사용할 수 있는 에디션이다. 평가판이 아니므로 사용 기간 제한이 없는 것이 특징이다.[16][17][18][19][20][21][22][23][24]
5. 관리 도구
SQL Server는 데이터베이스 관리를 위한 여러 도구를 제공한다.
현재 주로 사용되는 관리 도구는 다음과 같다.
- SQL Server Management Studio (SSMS): SQL Server 2005부터 포함된 GUI 기반의 주요 관리 도구이다. 최신 버전은 모든 기능을 포함하여 무료로 제공된다.[45]
- https://github.com/Microsoft/sqlopsstudio Azure Data Studio: 깃허브에서 오픈 소스로 공개된 Visual Studio Code 기반의 크로스 플랫폼(Windows/Linux/Mac) 관리 도구이다. 원래 SQL Operations Studio라는 이름으로 개발되었으며, 언어 팩 설치 시 한국어를 지원한다.
명령줄 환경에서는 SQLCMD 유틸리티를 사용할 수 있다. 이는 SQL Server 2005 버전부터 도입되어 기존의 OSQL 및 ISQL 도구를 대체하였으며, 명령 프롬프트에서 SQL 쿼리를 실행하고 스크립트(`.sql` 파일)를 처리하는 기능을 제공한다.
이 외에도 타사에서 개발한 관리 도구가 있으며, 대표적으로 https://jp.navicat.com/products/navicat-for-sqlserver Navicat for SQL Server는 SQL Server 2000부터 2016 버전 및 SQL Azure까지 지원한다.
과거 SQL Server 2000 및 이전 버전에서는 SQL Server Enterprise Manager가 주요 관리 도구로 사용되었으나, 이는 상용 에디션에만 포함되었다.
5. 1. SQL Server Management Studio (SSMS)
SSMS는 마이크로소프트 SQL 서버 2005 버전부터 포함된 GUI 기반의 주요 관리 도구이다. 이 도구는 마이크로소프트 SQL 서버의 모든 구성 요소를 구성, 관리, 운영하는 데 사용되며, SQL Server 2005부터 기존의 SQL Server Enterprise Manager를 대체하는 기본 관리 인터페이스가 되었다.SSMS는 서버의 개체 및 기능과 상호작용하는 스크립트 편집기와 그래픽 도구를 모두 포함하고 있다. 핵심 기능 중 하나인 개체 탐색기(Object Explorer)를 사용하면 서버 내의 데이터베이스, 테이블, 저장 프로시저 등 모든 개체를 쉽게 탐색하고 선택하며 관리할 수 있다. 또한, 쿼리 실행 계획을 시각적으로 확인하고 분석하여 데이터베이스 성능을 최적화하거나, 새로운 데이터베이스를 생성하고, 테이블 및 인덱스를 추가하거나 수정하여 기존 데이터베이스 스키마를 변경하는 등의 작업에 활용된다. 쿼리를 직접 작성하고 실행하기 위한 GUI 기반 인터페이스를 제공하는 쿼리 창도 포함되어 있다.
과거에는 SQL Server Express 에디션 사용자를 위해 기능이 일부 제한된 ''SQL Server Management Studio Express''(SSMSE) 버전이 별도로 제공되었으나, 현재는 모든 기능을 포함한 SSMS 전체 버전을 마이크로소프트에서 무료로 다운로드하여 사용할 수 있다.[45]
현재 마이크로소프트 SQL 서버에는 SSMS 외에도 다음과 같은 관리 도구가 있다.
- https://github.com/Microsoft/sqlopsstudio Azure Data Studio: 깃허브에서 오픈 소스로 공개된 관리 도구이다. Visual Studio Code를 기반으로 개발되었으며, 윈도우, 리눅스, macOS 등 다양한 운영체제에서 사용할 수 있는 크로스 플랫폼 도구이다. 언어 팩을 설치하면 한국어를 지원한다.
이 외에도 타사에서 개발한 관리 도구(예: `https://jp.navicat.com/products/navicat-for-sqlserver Navicat for SQL Server`)가 있으며, SQL 서버 2000 이전 버전에서는 `SQL Server Enterprise Manager`가 주요 관리 도구로 사용되었다.
5. 2. Azure Data Studio
Azure Data Studio(애저 데이터 스튜디오)는 선택적으로 다운로드할 수 있는 크로스 플랫폼 쿼리 편집기이다. 사용자는 이 도구를 이용하여 쿼리를 작성하고, 쿼리 결과를 내보낼 수 있으며, Git 저장소에 SQL 스크립트를 커밋하고 기본적인 서버 진단을 수행할 수 있다. Azure Data Studio는 Windows, Mac, Linux 시스템을 지원한다.이 도구는 2018년 9월에 일반 사용자에게 공개되었다. 출시 전 미리 보기 버전은 SQL Server Operations Studio라는 이름으로 알려져 있었다.
5. 3. Visual Studio
Microsoft Visual Studio는 Microsoft SQL Server를 사용한 데이터 프로그래밍을 위한 기본 지원 기능을 포함하고 있다. 이를 통해 SQL CLR에서 실행될 코드를 작성하고 디버깅하는 것이 가능하다. 또한, 데이터베이스 스키마를 그래픽 인터페이스를 통해 생성하거나 보거나 편집할 수 있는 데이터 디자이너 기능을 제공한다. 쿼리는 시각적인 방법 또는 코드를 직접 작성하는 방식으로 생성할 수 있으며, SSMS 2008 버전부터는 SQL 쿼리에 대한 IntelliSense 기능도 지원한다.5. 4. Business Intelligence Development Studio (BIDS)
비즈니스 인텔리전스 개발 스튜디오(BIDS)는 Microsoft에서 제공하는 IDE이다. SQL Server Analysis Services, Reporting Services, Integration Services와 같은 SQL 서버의 기능을 활용하여 데이터 분석 및 비즈니스 인텔리전스 솔루션을 개발하는 데 사용된다.이 도구는 Microsoft Visual Studio 개발 환경을 기반으로 하지만, SQL 서버 서비스와 관련된 확장 기능과 프로젝트 유형이 추가되어 있다. 구체적으로는 보고서(Reporting Services 사용), 큐브 및 데이터 마이닝 구조(Analysis Services 사용)를 만들기 위한 도구, 컨트롤, 프로젝트 등을 포함한다.
SQL Server 2012 버전부터는 이 IDE의 이름이 SQL Server Data Tools (SSDT)로 변경되었다.
5. 5. SQLCMD
SQLCMD는 마이크로소프트 SQL 서버에 포함된 명령줄 응용 프로그램으로, SQL 서버의 관리 기능을 제공한다. 명령 프롬프트에서 SQL 쿼리를 직접 작성하고 실행할 수 있게 해준다. 또한, 여러 SQL 문을 하나의 스크립트로 만들어 실행하는 스크립팅 언어 역할도 수행한다. 이러한 스크립트는 보통 '.sql' 확장자를 가진 파일로 저장되며, 데이터베이스를 관리하거나 데이터베이스 배포 시 스키마를 생성하는 데 사용된다.SQLCMD는 SQL Server 2005 버전에서 처음 도입되었으며, 이후 SQL Server 2008, 2008 R2, 2012, 2014, 2016, 2019 버전까지 계속 포함되었다. 이전 버전에서는 OSQL과 ISQL이라는 도구가 사용되었는데, 이들은 T-SQL 실행과 관련하여 기능적으로 SQLCMD와 유사했고 많은 명령줄 매개변수도 동일했지만, SQLCMD가 더 다양한 기능을 제공한다.
6. 라이선스
SQL Server 2005 및 2008 버전의 라이선스 정책은 다음과 같다.[26] 최신 라이선스 정보는 마이크로소프트 SQL 서버 가격 책정 페이지에서 확인할 수 있다.[27]
- '''프로세서 라이선스''' (SQL Server 2012 이후 '''코어 기반 라이선스'''로 변경됨)
- *과거의 프로세서 라이선스는 서버에 탑재된 물리적 프로세서 수에 따라 라이선스를 부여하는 방식이었다. 코어가 여러 개라도 프로세서가 1개면 1개의 라이선스로 계산했다. 이 방식은 접속하는 클라이언트 수에 제한이 없어 불특정 다수가 사용하는 웹 서버 등에 적합했다. SQL Server 2008 R2에서는 코어 수 증가 추세를 반영하여 약 25%의 가격 인상이 있었다.
SQL Server 2012부터는 물리적 프로세서 수 기준 라이선스가 폐지되고, 코어 기반 라이선스**로 전환되었다. 이 방식은 서버에 탑재된 프로세서의 코어 수를 기준으로 라이선스를 구매한다.
- *코어 라이선스는 각 프로세서당 최소 4개의 라이선스가 필요하며, 4개를 초과하는 경우 2코어 단위로 라이선스를 추가 구매해야 한다. 예를 들어, 6코어 프로세서는 6개, 8코어 프로세서는 8개의 코어 라이선스가 필요하다. 이 변경으로 인해 6코어 이상의 프로세서를 사용하는 경우, 이전 프로세서 라이선스 방식에 비해 실질적인 비용이 증가할 수 있다. (예: 8코어 프로세서의 경우 SQL Server 2008 대비 2012 버전에서 약 2.5배 가격 인상)
- *가상 머신에 설치된 SQL Server에도 코어 라이선스를 적용할 수 있다. 이 경우, 각 가상 머신에 할당된 가상 코어 수만큼 라이선스가 필요하며, 물리적 환경과 동일한 최소 라이선스 요구 사항(가상 머신당 최소 4코어 라이선스)이 적용된다.
- *Enterprise Edition의 코어 기반 라이선스의 경우, 물리적 서버의 모든 코어에 대해 라이선스를 구매하고 소프트웨어 어슈어런스(SA)를 추가하면, 해당 서버 내에서 운영되는 가상 머신 수에 제한 없이 SQL Server를 실행할 수 있는 혜택이 제공된다.
- '''서버/CAL 라이선스'''
- *SQL Server 소프트웨어가 설치된 서버에 대한 라이선스(서버 라이선스)와 해당 서버에 접속하는 사용자 또는 장치에 대한 라이선스(CAL, Client Access License)를 함께 구매하는 방식이다. 접속하는 사용자나 장치의 수가 많지 않은 소규모 환경에 적합하다.
- *CAL은 실제로 SQL Server에 접속하여 서비스를 이용하는 사용자(직원 등) 또는 디바이스(PC, 모바일 기기 등) 수를 기준으로 구매해야 한다. 이는 SQL Server의 동시 접속 세션 수나 생성된 계정 수와는 다른 개념이다. 예를 들어, 웹 서버(IIS 등)가 하나의 계정으로 SQL Server에 접속하더라도, 해당 웹 서비스를 통해 SQL Server의 기능을 이용하는 최종 사용자나 디바이스가 여러 개라면 그 수만큼 CAL이 필요하다.
- *하나의 CAL을 구매하면 해당 사용자 또는 디바이스는 라이선스가 부여된 여러 SQL Server 인스턴스에 접속할 수 있다. 예를 들어, 사용자 A가 CAL을 보유하고 있다면, 추가 CAL 구매 없이 SQL Server 1과 SQL Server 2 모두에 접속할 수 있다.
라이선스의 세부 조건은 에디션에 따라 다를 수 있으므로, 마이크로소프트 공식 사이트[28]나 라이선스 판매 파트너를 통해 정확한 정보를 확인하는 것이 좋다.
- '''고가용성 환경에서의 라이선스'''
SQL Server의 장애 조치 클러스터링 기능이나 미러링 기능을 사용하여 액티브-스탠바이(고가용성을 위한 중복 구성) 환경을 구축하는 경우, 주 서버(액티브)에 대한 라이선스가 있다면 백업 서버(스탠바이)에 대한 별도의 라이선스는 필요하지 않다. 단, 이는 스탠바이 서버가 평소에는 어떠한 서비스도 제공하지 않고 오직 장애 발생 시 대체 작동만을 위해 대기하는 경우에만 해당한다. 만약 스탠바이 서버도 평소에 읽기 전용 쿼리 처리 등으로 사용되는 액티브-액티브** 구성이라면 양쪽 서버 모두에 라이선스가 필요하다.
- *프로세서 라이선스(또는 코어 라이선스)의 경우, 스탠바이 서버의 프로세서(또는 코어) 수는 액티브 서버의 프로세서(또는 코어) 수를 초과할 수 없다.
- *스탠바이 서버가 액티브 서버의 역할을 넘겨받아 작동하게 된 경우, 최대 30일 동안 추가 라이선스 없이 운영할 수 있다. 30일 이후에도 계속 운영하려면 해당 서버에 대한 라이선스를 구매해야 한다.
7. 경쟁 제품
마이크로소프트 SQL 서버는 기업용 RDBMS 시장, 특히 중소기업 시장에서 높은 점유율을 차지하고 있다. 하지만 여러 경쟁 업체들이 다양한 제품을 제공하고 있으며, 오픈소스 데이터베이스의 보급으로 경쟁이 더욱 치열해지고 있다. 주요 경쟁 제품은 다음과 같다.
| 제품명 | 개발사 / 라이선스 |
|---|---|
| 오라클 데이터베이스 | Oracle (미국) |
| DB2 | IBM (미국) |
| SAP HANA | SAP (독일) |
| Amazon Aurora | Amazon.com (미국) |
| PostgreSQL | 오픈소스 |
| MySQL | 오픈소스 |
참조
[1]
웹사이트
Latest updates and version history for SQL Server
https://learn.micros[...]
[2]
웹사이트
Installation guidance for SQL Server on Linux
https://docs.microso[...]
2018-02-01
[3]
웹사이트
What's new in SQL Server 2019 (15.x)
https://docs.microso[...]
2022-05-11
[4]
웹사이트
Requirements for Installing SQL Server 2016
https://msdn.microso[...]
msdn.microsoft.com
2016-07-28
[5]
웹사이트
SQL Server 2022 release notes
https://learn.micros[...]
2023-02-14
[6]
웹사이트
Choosing an Edition of SQL Server 2000
http://images10.newe[...]
[7]
웹사이트
IT Pro
http://sqlmag.com/da[...]
[8]
웹사이트
Features Supported by the Editions of SQL Server 2000
https://web.archive.[...]
[9]
웹사이트
Chapter 3 - Choosing an Edition of SQL Server 2000
http://technet.micro[...]
2010-11-01
[10]
웹사이트
SQL Server 2000 - Downloads
https://web.archive.[...]
[11]
웹사이트
SQL Server 2000 Product Documentation
https://web.archive.[...]
[12]
서적
Pro SQL Server 2008 Service Broker
https://www.apress.c[...]
Apress
2019-12-15
[13]
블로그
SQL Server 2016 Service Pack 1 (SP1) released !!!
https://blogs.msdn.m[...]
[14]
웹사이트
Microsoft SQL Server Developer Edition is now free
https://blogs.techne[...]
2016-05-14
[15]
웹사이트
SQL Server のバージョンとエディションを識別する方法
https://support.micr[...]
[16]
웹사이트
@IT:Windows TIPS -- Tips:SQL Server 2000/MSDEのバージョンをチェックする
https://www.atmarkit[...]
[17]
웹사이트
Microsoft SQL Server - 製品概要
https://web.archive.[...]
[18]
웹사이트
SQL Server 2005 のエディションとコンポーネント | Microsoft Docs
https://docs.microso[...]
[19]
웹사이트
SQL Server 2008 のエディションとコンポーネント | Microsoft Docs
https://docs.microso[...]
[20]
웹사이트
SQL Server 2012 のエディションとコンポーネント | Microsoft Docs
https://docs.microso[...]
[21]
웹사이트
SQL Server 2014 - SQL Server 2014 | Microsoft Docs
https://docs.microso[...]
[22]
웹사이트
エディションとサポートされる機能 - SQL Server 2016 | Microsoft Docs
https://docs.microso[...]
[23]
웹사이트
エディションとサポートされる機能 - SQL Server 2017 | Microsoft Docs
https://docs.microso[...]
[24]
웹사이트
SQL Server 2019 の各エディションとサポートされている機能 - SQL Server | Microsoft Docs
https://docs.microso[...]
[25]
웹사이트
SQL Server 2008 で廃止されたデータベース エンジンの機能, SQL Server 2014 で廃止されたデータベース エンジンの機能
https://msdn.microso[...]
[26]
웹사이트
SQL Server ライセンス早わかりガイド
https://www.microsof[...]
[27]
문서
SQL Server 2016 のライセンスガイド
https://download.mic[...]
[28]
웹사이트
マイクロソフト サーバー : ホーム
http://www.microsoft[...]
[29]
웹사이트
What is SQL Server Machine Learning Services
https://docs.microso[...]
Microsoft Corporation
2018-04-10
[30]
웹사이트
Introducing Service Broker
http://msdn.microsof[...]
2007-12-03
[31]
웹사이트
SSAS Entity Framework Provider
http://www.agiledesi[...]
2011-09-29
[32]
웹사이트
Analysis Services Architecture
http://msdn.microsof[...]
2007-12-03
[33]
웹사이트
Data Mining Concepts
http://msdn.microsof[...]
2007-12-03
[34]
웹사이트
SQL Server Reporting Services
http://msdn.microsof[...]
2007-12-03
[35]
웹사이트
Cannot open a SQL Reporting Services .rptproj file | Microsoft Connect
http://webarchive.lo[...]
Connect.microsoft.com
2011-09-04
[36]
웹사이트
Image Device Information Settings
http://msdn.microsof[...]
[37]
웹사이트
MSDN Library: Reporting Services Render Method
http://msdn.microsof[...]
[38]
웹사이트
Device Information Settings
http://msdn.microsof[...]
[39]
웹사이트
An Introduction to SQL Server Notification Services
http://www.codeproje[...]
2008-11-14
[40]
웹사이트
SQL Server Notification Services Removed from SQL Server 2008
http://blog.desktopa[...]
2008-09-17
[41]
웹사이트
Discontinued Functionality in SQL Server 2008 Reporting Services
https://technet.micr[...]
2008-09-17
[42]
웹사이트
Introducing SQL Server Notification Services
http://msdn.microsof[...]
2007-12-03
[43]
웹사이트
Integration Services Overview
http://msdn.microsof[...]
2007-12-03
[44]
웹사이트
Introduction to Full-Text Search
http://msdn.microsof[...]
2007-12-03
[45]
웹사이트
SQL Server Management Studio (SSMS) のダウンロード - SQL Server | Microsoft Docs
https://docs.microso[...]
[46]
웹사이트
Announcing SQL Server on Linux
https://blogs.techne[...]
2016-05-14
[47]
웹사이트
The Programming Languages Beacon, v10.3
http://www.lextrait.[...]
2010-07-00
[48]
문서
2016년 4월 12일 지원이 종료된다.
[49]
웹사이트
What's new in SQL Server 2019
https://docs.microso[...]
[50]
웹사이트
Microsoft SQL Server 2005: Compare Features
http://www.microsoft[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com